package br.com.quiz.bean;

import java.util.ArrayList;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.hibernate.HibernateException;

import br.com.quiz.dao.AbstractDAO;
import br.com.quiz.dao.DisciplinaDAO;
import br.com.quiz.domain.Disciplina;
import br.com.quiz.util.JSFUtil;

@ManagedBean( name = "DisciplinaMB" )
@ViewScoped
public class DisciplinaMB{

	private ArrayList< Disciplina > disciplinas;
	private ArrayList< Disciplina > disciplinasFiltrados;
	private Disciplina disciplina;

	public ArrayList< Disciplina > getDisciplinas() {
		return disciplinas;
	}

	public void setDisciplinas( ArrayList< Disciplina > disciplinas ) {
		this.disciplinas = disciplinas;
	}

	public ArrayList< Disciplina > getDisciplinasFiltrados() {
		return disciplinasFiltrados;
	}

	public void setDisciplinasFiltrados( ArrayList< Disciplina > disciplinasFiltrados ) {
		this.disciplinasFiltrados = disciplinasFiltrados;
	}

	public Disciplina getDisciplina() {
		return disciplina;
	}

	public void setDisciplina( Disciplina disciplina ) {
		this.disciplina = disciplina;
	}

	@PostConstruct
	public void prepararPesquisa() {

		try {
			disciplinas = (ArrayList< Disciplina >) DisciplinaDAO.listar();
		} catch ( Exception e ) {
			e.printStackTrace();
			JSFUtil.adicionarMensagemErro( e.getMessage() );
		}

	}

	public void prepararNovo() {
		disciplina = new Disciplina();
	}

	public void novo() {
		try{
		AbstractDAO.salvarOuEditar( disciplina );
		disciplinas = (ArrayList< Disciplina >) DisciplinaDAO.listar();
		JSFUtil.adicionarMensagemSucesso( "Disciplina salva com Sucesso" );
		}catch( HibernateException e){
			JSFUtil.adicionarMensagemErro( e.getMessage() );
		}
	}

	public void excluir() {
		try{
		AbstractDAO.apagar( disciplina );
		disciplinas = (ArrayList< Disciplina >) DisciplinaDAO.listar();
		JSFUtil.adicionarMensagemSucesso( "Disciplina Removida com Sucesso" );
		}catch(HibernateException e){
			JSFUtil.adicionarMensagemErro( e.getMessage() );
			
		}
	}

	public void editar() {
		try{
		AbstractDAO.salvarOuEditar( disciplina );
		JSFUtil.adicionarMensagemSucesso( "Disciplina editada com Sucesso" );
		}catch( HibernateException e){
			JSFUtil.adicionarMensagemErro( e.getMessage() );
		}
	}

}
